gadget: Add helpers for modifying state
authorBenjamin Otte <otte@redhat.com>
Sat, 19 Dec 2015 07:46:28 +0000 (08:46 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 11 Jan 2016 16:05:22 +0000 (17:05 +0100)
They will be used in future commits.

I also was too lazy to convert existing widgets.

gtk/gtkcssgadget.c
gtk/gtkcssgadgetprivate.h

index c068c95a0aef7b2969aa1a0123f1b0705c819348..dfda4030906ac5d1f610ca7aec5326f8e762e9f5 100644 (file)
@@ -394,6 +394,56 @@ gtk_css_gadget_remove_class (GtkCssGadget *gadget,
   gtk_css_node_remove_class (priv->node, quark);
 }
 
+/**
+ * gtk_css_gadget_set_state:
+ * @gadget: a #GtkCssGadget
+ * @state: The new state
+ *
+ * Sets the state of the gadget's CSS node.
+ */
+void
+gtk_css_gadget_set_state (GtkCssGadget  *gadget,
+                          GtkStateFlags  state)
+{
+  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
+
+  gtk_css_node_set_state (priv->node, state);
+}
+
+/**
+ * gtk_css_gadget_add_state:
+ * @gadget: a #GtkCssGadget
+ * @state: The state to add
+ *
+ * Adds the given states to the states of gadget's CSS node. Other states
+ * will be kept as they are.
+ */
+void
+gtk_css_gadget_add_state (GtkCssGadget  *gadget,
+                          GtkStateFlags  state)
+{
+  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
+
+  gtk_css_node_set_state (priv->node, gtk_css_node_get_state (priv->node) | state);
+}
+
+/**
+ * gtk_css_gadget_remove_state:
+ * @gadget: a #GtkCssGadget
+ * @state: The state to remove
+ *
+ * Adds the given states to the states of gadget's CSS node. Other states
+ * will be kept as they are.
+ */
+void
+gtk_css_gadget_remove_state (GtkCssGadget  *gadget,
+                             GtkStateFlags  state)
+{
+  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
+
+  gtk_css_node_set_state (priv->node, gtk_css_node_get_state (priv->node) & ~state);
+}
+
 static gint
 get_number (GtkCssStyle *style,
             guint        property)
index b23f5e738639bbe4a40d15327460e17b0f8c08a1..40efe8dfadd6310a627d3cb4b48b16de4328eb9f 100644 (file)
@@ -86,6 +86,12 @@ void            gtk_css_gadget_add_class                (GtkCssGadget
                                                          const char             *name);
 void            gtk_css_gadget_remove_class             (GtkCssGadget           *gadget,
                                                          const char             *name);
+void            gtk_css_gadget_set_state                (GtkCssGadget           *gadget,
+                                                         GtkStateFlags           state);
+void            gtk_css_gadget_add_state                (GtkCssGadget           *gadget,
+                                                         GtkStateFlags           state);
+void            gtk_css_gadget_remove_state             (GtkCssGadget           *gadget,
+                                                         GtkStateFlags           state);
 
 void            gtk_css_gadget_get_preferred_size       (GtkCssGadget           *gadget,
                                                          GtkOrientation          orientation,